{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 工具 (Tools)\n",
    "\n",
    "当您向智能体（Agent）提出诸如“深圳今天的天气如何？”、“今天下午我有课要上吗？”或“请帮我请一下明天下午的假，因为我生病住院了”等请求时，智能体自身并不能直接提供全面的答复或执行相应的操作。为了有效地响应这些任务，智能体需要利用工具（Tools）来与外部环境进行交互。若将大模型比作智能体的大脑，负责规划任务和发布指令，那么工具就如同智能体的耳目手足，负责获取信息和执行指令，二者缺一不可。\n",
    "\n",
    "ERNIE Bot Agent 提供了一系列开箱即用的预置工具，也支持开发者自定义工具，以适应不同场景的需求。这些工具主要分为两类：\n",
    "\n",
    "- 本地工具(LocalTool)：本地工具的工具定义(schema)和工具执行都在本地进行，与 ERNIE Bot Agent 运行在同一进程中。\n",
    "- 远程工具(RemoteTool)：远程工具的工具定义和工具执行都由某些远程服务（例如星河社区工具中心，或者开发者自己的服务）提供。远程工具的核心在于发送请求和接收响应，ERNIE Bot Agent 对此逻辑进行了高度封装，并与大模型的编排能力相结合，从而实现了智能体的自动化调度。\n",
    "\n",
    "在开始本教程前，我们需要先获取[飞桨AI Studio星河社区的access_token](https://aistudio.baidu.com/index/accessToken)并且其配置成环境变量，用于对调用大模型和工具中心进行鉴权。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "\n",
    "os.environ[\"EB_AGENT_ACCESS_TOKEN\"] = \"<access_token>\""
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 使用本地工具 (LocalTool)\n",
    "\n",
    "这一部分将详细介绍如何利用预置的时间工具，并展示本地工具的实际运作方式。\n",
    "\n",
    "1. **实例化CurrentTimeTool**：首先，我们需要创建CurrentTimeTool的一个实例。\n",
    "2. **调用工具功能**：创建实例后，我们可以直接调用其`__call__`函数来执行工具的主要功能。通过这种简洁的调用方式，我们能够快速轻松地展示或获取当前时间。\n",
    "3. **异步执行**：为了确保工具的高效执行，我们已将所有工具统一设置为异步执行模式。因此，在调用`__call__`函数时，需要使用`await`关键字，以确保工具的正确和高效运行。\n",
    "\n",
    "下面是一个简单的代码示例，展示了如何加载和使用CurrentTimeTool："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'current_time': '2023年12月28日 16时57分37秒'}"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from erniebot_agent.tools.current_time_tool import CurrentTimeTool\n",
    "\n",
    "current_time_tool = CurrentTimeTool()\n",
    "await current_time_tool()"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "下面，我们将展示如何通过将本地工具集成到智能体上，从而扩展和增强其能力。为了实现这一目标，我们构建了一个FunctionAgent，并在创建过程中将CurrentTimeTool工具与之相结合。这一集成使得智能体具备了获取实时时间信息的功能。\n",
    "\n",
    "一旦智能体被赋予这种能力，我们就可以向其发出诸如“请问现在是几点钟”之类的请求。智能体会利用文心大模型的Function Calling功能，调用CurrentTimeTool来获取当前的时间信息。在获取时间数据后，智能体会利用大模型的语言处理能力对这些信息进行加工和润色，最终以一种自然、流畅的方式将结果反馈给用户。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Agent 回复: 根据CurrentTimeTool返回的结果，当前时间是2023年12月28日 16时57分39秒。如果您还有其他问题或需要帮助，请随时告诉我。\n",
      "-----------------\n",
      "Agent 自动化执行步骤\n",
      "<role: 'user', content: '请问现在是几点钟', token_count: 215>\n",
      "<role: 'assistant', function_call: {'name': 'CurrentTimeTool', 'thoughts': '用户想知道现在几点了，我可以使用CurrentTimeTool来获取当前时间', 'arguments': '{}'}, token_count: 19>\n",
      "<role: 'function', name: 'CurrentTimeTool', content: '{\"current_time\": \"2023年12月28日 16时57分39秒\"}'>\n",
      "<role: 'assistant', content: '根据CurrentTimeTool返回的结果，当前时间是2023年12月28日 16时57分39秒。如果您还有其他问题或需要帮助，请随时告诉我。', token_count: 42>\n"
     ]
    }
   ],
   "source": [
    "from erniebot_agent.chat_models import ERNIEBot\n",
    "from erniebot_agent.agents import FunctionAgent\n",
    "\n",
    "agent = FunctionAgent(\n",
    "    llm=ERNIEBot(model=\"ernie-3.5\"),\n",
    "    tools=[current_time_tool],\n",
    ")\n",
    "result = await agent.run(\"请问现在是几点钟\")\n",
    "print(f\"Agent 回复: {result.text}\")\n",
    "print(\"-----------------\")\n",
    "print(\"Agent 自动化执行步骤\")\n",
    "for msg in result.chat_history:\n",
    "    print(msg)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 使用远程工具 (RemoteTool)\n",
    "\n",
    "在飞桨星河社区，我们集成了众多的远程工具，旨在为开发者提供简单、高效的方式来增强智能体的功能。这些工具可以通过一行代码轻松加载，极大地简化了使用过程。以OCR工具为例，您只需执行一条命令，即可快速调用该工具。更多星河社区预置的远程工具，请访问[星河社区工具中心](https://aistudio.baidu.com/application/center/tool%E3%80%82)。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<name: highacc-ocr/v1.8/OCR, server_url: https://tool-highacc-ocr.aistudio-hub.baidu.com/, description: 用于提取并识别图片上的文字及位置信息>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from erniebot_agent.tools import RemoteToolkit\n",
    "\n",
    "ocr_tool = RemoteToolkit.from_aistudio(\"highacc-ocr\").get_tools()[0]\n",
    "ocr_tool"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我们下载一个预先准备好的英文路标图片作为示例输入，以便进行后续处理和分析。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "--2023-12-28 16:57:44--  https://paddlenlp.bj.bcebos.com/datasets/examples/road_sign.jpeg\n",
      "Resolving paddlenlp.bj.bcebos.com (paddlenlp.bj.bcebos.com)... 10.70.0.165\n",
      "Connecting to paddlenlp.bj.bcebos.com (paddlenlp.bj.bcebos.com)|10.70.0.165|:443... connected.\n",
      "HTTP request sent, awaiting response... 200 OK\n",
      "Length: 44056 (43K) [image/jpeg]\n",
      "Saving to: ‘road_sign.jpeg.1’\n",
      "\n",
      "100%[======================================>] 44,056      --.-K/s   in 0.01s   \n",
      "\n",
      "2023-12-28 16:57:44 (3.22 MB/s) - ‘road_sign.jpeg.1’ saved [44056/44056]\n",
      "\n"
     ]
    }
   ],
   "source": [
    "!wget https://paddlenlp.bj.bcebos.com/datasets/examples/road_sign.jpeg"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/jpeg": "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",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from IPython.display import Image\n",
    "\n",
    "pil_img = Image(filename=\"road_sign.jpeg\")\n",
    "display(pil_img)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "接下来，我们将利用FileManager将先前下载的图片实例化为File对象。有关File的详细内容和操作，请参阅我们的[File模块文档](https://ernie-bot-agent.readthedocs.io/zh-cn/latest/modules/file/)。完成这一步骤后，我们将File对象的ID作为参数传递给ocr_tool进行处理。通过这种方式，工具能够顺利执行并成功从图片中提取出文字信息。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'words_result': ['BEWARE', 'OF FALLING', 'COCONUTS'], 'words_result_num': 3}"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from erniebot_agent.file import GlobalFileManagerHandler\n",
    "\n",
    "file_manager = await GlobalFileManagerHandler().get()\n",
    "local_file = await file_manager.create_file_from_path(file_path=\"road_sign.jpeg\", file_type=\"local\")\n",
    "\n",
    "await ocr_tool(image=local_file.id)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "与本地工具相似，远程工具同样能够被挂载到智能体上，从而扩展其功能和应用范围。通过定义一个FunctionAgent，并在创建时将预先定义好的OCR工具挂载到该智能体上，我们能够轻松地为其增加图像处理和文字识别的能力。\n",
    "\n",
    "在执行请求“这张图上面的文字说了什么”时，智能体会自动调用挂载的OCR工具，对当前提供的图片进行文字识别。识别结果随后被传递给大模型进行自然语言润色，并最终以自然、流畅的语言形式回复给用户。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Agent 回复: 根据图片中的文字，需要注意“BEWARE”和“FALLING COCONUTS”，也就是说需要小心掉落的椰子。具体而言，这些文字似乎是在警告人们注意从树上掉下来的椰子，因为它们可能会造成伤害或危险。为了确保安全，需要保持警觉并采取适当的预防措施。\n",
      "-----------------\n",
      "Agent 自动化执行步骤\n",
      "<role: 'user', content: '这张图上面的文字说了什么\\n<file>file-local-2a66003e-a55f-11ee-a02d-506b4b225bd6</file>', token_count: 428>\n",
      "<role: 'assistant', function_call: {'name': 'highacc-ocr/v1.8/OCR', 'thoughts': '用户想要知道图片中的文字说了什么；我需要使用OCR工具来提取图片中的文字；根据highacc-ocr/v1.8/OCR工具的定义，全部参数集合为[image, language_type]；其中\"required\": true的必要参数集合为[image]；结合用户当前问题“这张图上面的文字说了什么”和整个对话历史，用户已经提供了以下参数值{image: \\'file-local-2a66003e-a55f-11ee-a02d-506b4b225bd6\\'}；其中已经提供对应参数值的\"required\": true的必要参数集合为[image]；尚未提供对应参数值的\"required\": true参数列表为[]；由于尚未提供对应参数值的\"required\": true参数列表为[]，即全部\"required\": true的必要参数都已经提供，我可以直接调用工具highacc-ocr/v1.8/OCR', 'arguments': '{\"image\":\"file-local-2a66003e-a55f-11ee-a02d-506b4b225bd6\"}'}, token_count: 256>\n",
      "<role: 'function', name: 'highacc-ocr/v1.8/OCR', content: '{\"words_result\": [\"BEWARE\", \"OF FALLING\", \"COCONUTS\"], \"words_result_num\": 3}'>\n",
      "<role: 'assistant', content: '根据图片中的文字，需要注意“BEWARE”和“FALLING COCONUTS”，也就是说需要小心掉落的椰子。具体而言，这些文字似乎是在警告人们注意从树上掉下来的椰子，因为它们可能会造成伤害或危险。为了确保安全，需要保持警觉并采取适当的预防措施。', token_count: 66>\n"
     ]
    }
   ],
   "source": [
    "agent = FunctionAgent(\n",
    "    llm=ERNIEBot(model=\"ernie-3.5\"),\n",
    "    tools=[ocr_tool],\n",
    ")\n",
    "\n",
    "result = await agent.run(\"这张图上面的文字说了什么\", files=[local_file])\n",
    "print(f\"Agent 回复: {result.text}\")\n",
    "print(\"-----------------\")\n",
    "print(\"Agent 自动化执行步骤\")\n",
    "for msg in result.chat_history:\n",
    "    print(msg)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 总结\n",
    "\n",
    "综上所述，我们深入探讨了智能体工具的概念，并详细阐述了本地工具与远程工具之间的主要差异。通过实际示例，我们演示了如何定义和使用这些工具，以及如何将它们与智能体有效地结合，从而增强智能体的功能。\n",
    "\n",
    "在接下来的内容中，我们将进一步探讨开发者如何根据不同的应用场景自定义本地工具和远程工具，以满足特定需求并实现更高级的功能。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "eb-sdk",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.18"
  },
  "orig_nbformat": 4,
  "vscode": {
   "interpreter": {
    "hash": "8a19f367f79553e5cd49921fbfd8af2792f58f47b1c0c637c2b65217dfab81ed"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
